home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / tsr / vprint51.zip / VPRINT.DOC < prev   
Text File  |  1992-09-04  |  38KB  |  1,783 lines

  1.  
  2.  
  3.                                           READ
  4.                                           THIS
  5.                                          BEFORE
  6.                                         PRINTING!!!!
  7.  
  8.         This document has been formatted in a special way. Virtually all dot
  9.         matrix printers have a condensed mode which prints 132 characters
  10.         across a standard 8 1/2 inch page.  When this file is printed out in
  11.         condensed mode, the resulting printed pages can be cut down to 5 1/2 X
  12.         8 1/2 inches.  The cut pages will fit nicely in the back of your
  13.         DOS manual for storage.
  14.  
  15.         Typically, you can turn on this mode by sending a special control
  16.         sequence to the printer from BASIC.  For example, you can turn on the
  17.         condensed mode of the IBM/Epson printer with the BASIC statement:
  18.         LPRINT chr$(15).  If your printer has such a condensed mode, turn it
  19.         on now, before printing the rest of this document.
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.                                       (tm)
  76.                                  VPRINT
  77.  
  78.                          Virtual Printer Utility
  79.                       for the IBM Personal Computer
  80.  
  81.                               User's Manual
  82.                (c) 1986, 1987, 1988, 1992 by David Whitman
  83.                               Version 5.10
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.     David Whitman
  109.     P.O. Box 1157
  110.     North Wales, PA 19454
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.                        Table of Contents
  138.  
  139.  
  140.  
  141.     What is VPRINT?.............................................1
  142.  
  143.     System Requirements.........................................2
  144.  
  145.     Starting VPRINT.............................................3
  146.  
  147.     Advanced Usage..............................................5
  148.  
  149.     Printer Emulation Options...................................7
  150.  
  151.     RS-232 Emulation Options....................................8
  152.  
  153.     Output Branching Options....................................9
  154.  
  155.     Setting VPRINT's Buffer Size...............................10
  156.  
  157.     Filter Options.............................................11
  158.  
  159.     Enable Options.............................................12
  160.  
  161.     Miscellaneous Options......................................13
  162.  
  163.     Software Compatibility.....................................14
  164.  
  165.     Programming Notes..........................................15
  166.  
  167.     Notes for Those Upgrading to This Version of VPRINT........18
  168.  
  169.     Miscellaneous and A Word From Our Sponsor..................19
  170.  
  171.     Registration Form..........................................23
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                                     1
  201.     >> What is VPRINT? <<
  202.  
  203.     VPRINT implements a "virtual printer" by capturing output
  204.     normally sent to your printer or COM port and redirecting it to a
  205.     file of your chosing.  There are many reasons you might want to
  206.     capture printer output:
  207.  
  208.        * Producing formatted files from software packages that don't
  209.          support "printing to disk".
  210.  
  211.        * Capturing output so it can be modified by other programs
  212.          prior to printing.
  213.  
  214.        * Setting up word processors and other programs to work with
  215.          your printer.  By capturing to disk, you can see exactly
  216.          what's being sent, and pinpoint problems immediately.
  217.  
  218.        * Capturing output generated on one computer, to be printed on
  219.          a different system.
  220.  
  221.        * Taking disk "snapshots" of your video screen.  When VPRINT
  222.          is running, the PrtSc key copies the screen to your disk
  223.          file.
  224.  
  225.        * Delaying printer output for later printing.  VPRINT responds
  226.          much faster than a "real" printer, but takes up much less
  227.          memory than most print spooling software.  If you can't
  228.          afford the memory for a print spooler, you can VPRINT
  229.          quickly, then print the file later during a time when your
  230.          computer is idle.
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                                     2
  267.  
  268.     >> System Requirements <<
  269.  
  270.     To run VPRINT, you need:
  271.  
  272.         IBM PC
  273.  
  274.         64K of memory, minimum
  275.  
  276.         1 disk drive, minimum
  277.  
  278.         DOS 2.0 or later
  279.  
  280.     VPRINT is designed to run on IBM PCs, but should run on all
  281.     systems that are compatible with the IBM BIOS.
  282.  
  283.     The following systems are known to run VPRINT successfully.  If
  284.     you are using VPRINT on a computer not on this list, please
  285.     write, and the list will be updated so that others can share this
  286.     information.
  287.  
  288.            IBM PC
  289.            IBM XT
  290.            IBM 3270 PC
  291.            IBM 3270 PC/G
  292.            ZEOS 386SX
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                                     3
  333.  
  334.     >> Starting VPRINT <<
  335.  
  336.     To capture printer output, you must "install" VPRINT.
  337.     Installation temporarily grafts a portion of VPRINT onto your
  338.     computer's input/output system.  Once installed, VPRINT remains a
  339.     part of the I/O system until you either shut your computer off,
  340.     or reset the system by pressing Ctrl-Alt-Del.
  341.  
  342.     To install VPRINT, type:
  343.  
  344.         VPRINT filename.ext  /i
  345.  
  346.     Use whatever filename you'd like printer output to be sent to.
  347.     The filename can optionally have a drive and/or pathname.  If you
  348.     don't use a filename, VPRINT will create a file named
  349.     VIRTUAL.PRN for you in the root directory of the default drive.
  350.  
  351.     The "/i" tells VPRINT that you want to install the program, and
  352.     if a filename is used, the "/i" must come AFTER the filename.
  353.  
  354.     After you type the above command, VPRINT will respond:
  355.  
  356.          VPRINT - virtual printer (version 5.10)
  357.  
  358.          User-supported software by D. Whitman
  359.          For help/info, type VPRINT ?
  360.  
  361.          Current Status:
  362.  
  363.             Redirection:         ENABLED
  364.             Emulated printers:   LPT1: and LPT2:
  365.             Emulated async port: None
  366.             Output branching:    DISABLED (print to file only)
  367.             Filter mode:         VERBATIM
  368.             Buffer size:         2048 bytes
  369.             Print file:          C:\VIRTUAL.PRN 
  370.  
  371.          Resident section has been installed.
  372.  
  373.     As programs attempt to send output to your printer, VPRINT
  374.     intercepts the output, and stores it in an internal buffer. Every
  375.     time this buffer fills up, VPRINT dumps the buffer to the file
  376.     you specified during installation.
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                                     4
  399.  
  400.     After you have finished your printing, the buffer may still
  401.     contain some of your output, not yet transferred to disk.  Before
  402.     using the output file, you should ask VPRINT to "flush" the
  403.     buffer, using the command:
  404.  
  405.          VPRINT /f
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                                     5
  465.     >> Advanced Usage <<
  466.  
  467.     The procedure given in the previous section will allow you to
  468.     capture printer output from most software packages, but does not
  469.     make use of all of VPRINT's capabilities.  This section will
  470.     discuss these further options.
  471.  
  472.     The VPRINT command has the following syntax:
  473.  
  474.        VPRINT [?] [d:][path][filename[.ext]]] /options
  475.  
  476.     If you type VPRINT ?, a one page help screen will be printed.
  477.  
  478.     You can specify a fully qualified file name, including drive and
  479.     path.  After installation, you can change the active printer file
  480.     by running VPRINT with a different filename.  This modifies the
  481.     resident code without loading a new copy or using more memory.
  482.  
  483.     VPRINT's options all start with a slash character "/" followed by
  484.     a single letter or number.  If a filename is used, the options
  485.     must come AFTER the filename.  Multiple options can be used.  The
  486.     following options are available:
  487.  
  488.         /i      install (required to load resident code)
  489.         /bnn    set buffer size in Kbytes: nn = 1-64 (defaults to 2)
  490.         /f      flush - empty any buffered output to disk
  491.         /s      report status
  492.  
  493.         /p1     emulate LPT1:
  494.         /p2     emulate LPT2:
  495.         /p3     emulate both printers (default)
  496.         /pp     emulate PrtSc only 
  497.         /p0     don't emulate LPT ports
  498.  
  499.         /a1     emulate COM1: (AUX:)
  500.         /a2     emulate COM2:
  501.         /a3     emulate both COM1: and COM2:
  502.         /a0     don't emulate COM ports (default)
  503.  
  504.         /y      branch output - send to a file AND printer
  505.         /x      no branching - send to file only
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                                     6
  531.         /n      neutral - don't filter output (default)
  532.         /l      drop LFs, expand CR to CR LF
  533.         /c      drop CRs, expand LF to CR LF
  534.  
  535.         /d      disable - flush buffer, use physical devices
  536.         /e      enable - use virtual printer again, after /d
  537.  
  538.     Again, like the filename, you can install VPRINT using one set of
  539.     options, then change by running VPRINT again with different
  540.     options.  The new options will modify the resident code without
  541.     using more memory.  The following sections will discuss these
  542.     options in more detail.
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                                     7
  597.     >> Printer Emulation Options <<
  598.  
  599.     You can control which printer port(s) VPRINT emulates.  By
  600.     default, VPRINT redirects printer output intended for both LPT1:
  601.     and LPT2:.  You can restrict this to only one printer using
  602.     options /p1 and /p2 , or capture just PrtSc output with option
  603.     /pp.
  604.  
  605.     For example, if you only want to capture output from LPT1:, you
  606.     would install VPRINT like this:
  607.  
  608.         VPRINT /i /p1
  609.  
  610.     Alternatively, if VPRINT is already installed, you can restrict
  611.     capture to LPT2: with this command:
  612.  
  613.         VPRINT /p2
  614.  
  615.     To only capture only screen print output, use the command:
  616.  
  617.         VPRINT /pp
  618.  
  619.     Note: Selective trapping of PrtSc may only work on IBM PCs or
  620.           extremely faithful clones.
  621.  
  622.     The /p3 option returns you to the default state, where output to
  623.     both printer ports is captured.
  624.  
  625.     You can turn off printer emulation altogether using option /p0.
  626.     This option is provided for use during RS-232 emulation.  (See
  627.     next section.)
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                                     8
  663.     >>RS-232 Emulation Options<<
  664.  
  665.     VPRINT can also trap output sent to your computer's RS-232 ports.
  666.     This allows you to redirect output to serial printers or
  667.     plotters.  Only *output* is affected - input from the COM port is
  668.     handled normally.
  669.  
  670.     By default, RS-232 emulation is turned off.  You can install
  671.     VPRINT to redirect COM1: output with the following command:
  672.  
  673.           VPRINT /i /a1
  674.  
  675.     Similar to the parallel printer emulation options, you can select
  676.     just COM2: with option /a2, both COM ports with /a3, or neither
  677.     with /a0.
  678.  
  679.     You may prefer to turn off parallel printer emulation with option
  680.     /p0 when using RS-232 emulation, to avoid mixing output for the
  681.     two types of devices.
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                                     9
  729.     >>Output Branching Options<<
  730.  
  731.     By default, VPRINT captures printer output and sends it to the
  732.     disk file you specify, bypassing your printer.  Schematically,
  733.     here's what happens:
  734.  
  735.     printer output ---> VPRINT     X      printer
  736.                           |
  737.                           |
  738.                           --------------> disk file
  739.  
  740.     VPRINT has a "branching" option which simultaneously captures
  741.     output to a file AND allows it to go on to your printer:
  742.  
  743.     printer output ---> VPRINT----------> printer
  744.                           |
  745.                           |
  746.                           --------------> disk file
  747.  
  748.     To turn on VPRINT`s branching option so that output is captured
  749.     AND printed, use the following command:
  750.  
  751.         VPRINT /y
  752.  
  753.     To turn off branching so that your printer is bypassed, use the
  754.     following command:
  755.  
  756.         VPRINT /x
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                                                    10
  795.     >>Setting VPRINT's Buffer Size<<
  796.  
  797.     By default, VPRINT sets up an internal buffer capable of holding
  798.     2048 characters.  This value was determined experimentally to
  799.     give the quickest operation while using the minimum of memory on
  800.     the author's system.
  801.  
  802.     If your print jobs are small, but larger than VPRINT's default 2K
  803.     buffer, you can maximize speed by specifying a buffer big enough
  804.     to hold the entire job, and eliminate disk access during
  805.     printing.
  806.  
  807.     Compatibility with certain software packages may require you to
  808.     install VPRINT with a larger buffer size.  If a program you're
  809.     running complains about your printer not being ready, or hangs up
  810.     when printing with VPRINT installed, reboot and try again with a
  811.     larger buffer.  If you can spare the memory, a buffer size of 64K
  812.     should allow VPRINT to work with absolutely any software.  See
  813.     the section titled "Software Compatibility" for more discussion
  814.     on this issue.
  815.  
  816.     You can change VPRINT's default buffer size during installation,
  817.     by using option /B.  For example, the following command installs
  818.     VPRINT with a buffer size of 16K:
  819.  
  820.              VPRINT /i /b16
  821.  
  822.     You can specify buffer sizes from 1 to 64K.  If you specify a
  823.     value larger than 64, VPRINT will give you a buffer size of 64K.
  824.     A buffer size of less than one is forced up to 1K.
  825.  
  826.     Unlike VPRINT's other options, once the buffer size is set, you
  827.     can't modify it without rebooting your computer and reinstalling
  828.     VPRINT.
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                                                                    11
  861.  
  862.     >> Filter Options <<
  863.  
  864.     By default, VPRINT stores to disk exactly what is being sent to
  865.     your printer.  However, under certain circumstances, it is
  866.     desirable to "filter" the output slightly.
  867.  
  868.     Standard DOS files end each line with a carriage return character
  869.     (CR), followed by a line feed character (LF).  Many programs,
  870.     including most word processors, will require files to be in this
  871.     format.  Unfortunately, when sending output to a printer, not all
  872.     programs terminate lines with a CR LF pair.
  873.  
  874.     For example, Volkswriter sends only line feeds at the end of
  875.     blank lines.  This works fine when sent to a printer, but if
  876.     captured to a file, the resulting file will look very strange
  877.     when re-edited. (Multiple blank lines disappear, and are replaced
  878.     with a single line full of boxes with holes in them -the screen
  879.     representation of the line feed character.)
  880.  
  881.     At least on older PC's, the PrtSc function acts even stranger.
  882.     PrtSc terminates each line exactly backwards, with a LF followed
  883.     by a CR.  This combination will confuse most text editors,
  884.     causing very strange behavior.
  885.  
  886.     VPRINT has two "filtering" modes which tend to force printed
  887.     output into standard DOS format.  These modes ignore either CRs
  888.     or LFs, while replacing the other character with a CR LF pair.
  889.  
  890.     Option /C ignores carriage returns, and expands LF to CR LF.
  891.     Similarly, /L ignores printed line feeds, but adds one after each
  892.     CR.
  893.  
  894.     If your captured output looks strange, try turning on the
  895.     different filtering modes and see if your output looks more
  896.     normal.
  897.  
  898.     You can turn off filtering with the /N option.  After /N is in
  899.     effect, output will again be captured verbatim.
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                                                                    12
  927.  
  928.     >> Enable Options <<
  929.  
  930.     Once VPRINT is installed, it remains a part of your computer's
  931.     input/output system until you either turn off your computer or
  932.     re-boot.  However, VPRINT can be temporarily disabled to allow
  933.     output to go to your printer as usual.
  934.  
  935.     Option /D disables VPRINT.  When /D is in effect, VPRINT remains
  936.     resident, but passes output unmodified to your printer.  Option
  937.     /D also flushes VPRINT's internal buffer, so that all your output
  938.     is available on disk.
  939.  
  940.     Option /E enables VPRINT, presumably after it's been disabled
  941.     with option /D.  When option /E is in effect, printer output is
  942.     once again redirected to your disk file.
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                                                    13
  993.     >> Miscellaneous Options <<
  994.  
  995.     A short help summary will be printed if you type VPRINT ?, or
  996.     just VPRINT with no other options.
  997.  
  998.     The /I option installs VPRINT.  This option loads VPRINT's
  999.     resident code and grafts it onto the I/O system of your computer.
  1000.     Once VPRINT is loaded, there is no need to specify /I on
  1001.     subsequent commands.  If you use /I when the resident code is
  1002.     already loaded, VPRINT will detect the resident code and will
  1003.     print an error message without re-loading.
  1004.  
  1005.     Option /F flushes VPRINT's internal buffer to disk.  To avoid
  1006.     constantly running your disk drive during printing, VPRINT
  1007.     collects a buffer-full of characters, then writes them to disk
  1008.     all at once.  Unless your output is an exact multiple of the
  1009.     buffer size, part of your output is still in VPRINT's internal
  1010.     buffer after printing.  Option /F forces the last part of your
  1011.     output to disk.
  1012.  
  1013.     Incidentally, VPRINT's internal buffer is automatically flushed
  1014.     before shifting to a new file, and when you disable VPRINT with
  1015.     option /D.
  1016.  
  1017.     Option /S prints a status report, indicating which options are in
  1018.     effect, and where your printed output is being sent.  This is the
  1019.     same report which is printed after using any of the other
  1020.     options, but /S allows you to check status without changing
  1021.     anything.
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.                                                                    14
  1059.     >> Software Compatibility <<
  1060.  
  1061.     VPRINT is compatible with essentially all software which can run
  1062.     under DOS.  However, certain programs may require you to install
  1063.     VPRINT with a larger buffer than the default 2048 bytes.
  1064.  
  1065.     If a software package over-runs VPRINT's buffer, VPRINT sends
  1066.     signals back to your program that your "printer" has gone
  1067.     off-line.  Upon receiving such signals, most software will stop
  1068.     printing, and ask you to correct the problem.  If this happens,
  1069.     abort the print and exit the program, then re-boot your computer.
  1070.  
  1071.     If your software ignores the signals, rather than getting an
  1072.     error message about your printer going off-line, your computer
  1073.     may lock up and cease to respond to the keyboard.  If you get
  1074.     such a lock-up, just turn your computer off, wait 5 seconds, then
  1075.     turn it on again.
  1076.  
  1077.     In either case, try installing VPRINT with a larger buffer size.
  1078.     The exact size needed will vary from program to program.  If
  1079.     you're having trouble and can spare the memory, use a buffer size
  1080.     of 64K.  DOS limits programs to printing 64K or less of data at
  1081.     once, so a 64K buffer guarantees that VPRINT can handle anything
  1082.     your software can throw at it.
  1083.  
  1084.     Sometimes when you examine your captured output, you'll see lots
  1085.     of strange characters mixed in with your text.  These are control
  1086.     characters sent by your software to set up and control your
  1087.     printer.  If you install your software to use a "generic" or
  1088.     "unknown" printer, you can usually eliminate these characters.
  1089.     You can also use VPRINT's filtering modes to correct the use of
  1090.     carriage return and line feed characters.
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.                                                                    15
  1125.     >> Programming Notes <<
  1126.  
  1127.     You can use VPRINT effectively without reading or understanding
  1128.     this section.  However, many users have expressed interest in how
  1129.     VPRINT works, and this section is provided for their benefit.
  1130.  
  1131.     VPRINT is written in assembly language for maximum speed and
  1132.     minimum size.  The source code is available to registered users
  1133.     by sending a formatted disk and a stamped return mailer.   The
  1134.     source code is in the syntax of the CHASM assembler, which is
  1135.     another product of mine.  A one page advertisement for CHASM is
  1136.     given near the end of this document.
  1137.  
  1138.     Please note that VPRINT's source code is provided for educational
  1139.     purposes, and to allow you to customize for your own use.  Under
  1140.     NO CIRCUMSTANCES may you distribute modified or translated
  1141.     versions, either in the public domain or for profit.
  1142.  
  1143.     Upon installation, VPRINT takes over the following interrupt
  1144.     vectors:
  1145.  
  1146.           INT 14H - BIOS routine RS232_IO
  1147.           INT 17H - BIOS routine PRINTER_IO
  1148.           INT 21H - DOS function dispatcher
  1149.           INT 28H - DOS_IDLE
  1150.  
  1151.     Vectors 14H and 17H are the low level BIOS routines handling
  1152.     output to RS-232 ports and parallel ports respectively.  VPRINT
  1153.     traps output by monitoring these interrupts, and stores the
  1154.     output in its buffer.  Essentially all software interfaces to
  1155.     devices directly or indirectly through these interrupts.
  1156.     However, any software which bypasses the BIOS for output will be
  1157.     unaffected by VPRINT.
  1158.  
  1159.     Safely emptying VPRINT's buffer turns out to be much harder than
  1160.     filling it.  DOS is not re-entrant, which means that it isn't
  1161.     necessarily safe for a memory resident program to call DOS for
  1162.     services such as disk i/o.  If DOS is already in the midst of
  1163.     processing a function call, a new call will clobber one of DOS's
  1164.     internal stacks and crash the system.
  1165.  
  1166.     Unfortunately, if a program trying to print is well behaved and
  1167.     uses DOS services rather than direct BIOS calls for output, DOS
  1168.     is going to be busy whenever VPRINT's interrupt 17H or interrupt
  1169.     14H handlers are active.  VPRINT uses several different tricks to
  1170.     get around this problem.
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.                                                                    16
  1191.  
  1192.     DOS maintains an undocumented flag which indicates whether a call
  1193.     would be re-entrant.  Although undocumented, DOS_CRITICAL is
  1194.     reasonably well understood, and used by many memory resident
  1195.     programs.  During installation, VPRINT gets a pointer to
  1196.     DOS_CRITICAL using an undocumented (but again, well understood
  1197.     and commonly used) DOS function.  If VPRINT's buffer is more than
  1198.     half full when a character is received for printing, VPRINT
  1199.     checks DOS_CRITICAL, and if it's safe, the buffer is emptied to
  1200.     disk.
  1201.  
  1202.     A second trick is taking over interrupt 28H, DOS_IDLE.  This is
  1203.     an undocumented DOS interrupt which is called during keyboard
  1204.     input and other periods when DOS has some time to kill.  With
  1205.     certain restrictions, it is safe to call DOS during interrupt 28H
  1206.     processing, even if DOS_CRITICAL is set.  The DOS spooler program
  1207.     PRINT functions by intercepting interrupt 28H. VPRINT monitors
  1208.     interrupt 28H and dumps the buffer if it's more than half full.
  1209.  
  1210.     VPRINT's last trick is intercepting calls to the DOS function
  1211.     dispatcher, interrupt 21H.  If VPRINT's buffer is more than half
  1212.     full when interrupt 21H is called, an attempt is made to empty
  1213.     the buffer.  This attempt is almost guaranteed to be successful,
  1214.     since DOS can't be active - by taking over the function
  1215.     dispatcher, we get a chance to do some i/o before DOS ever sees
  1216.     any other request for services and becomes busy.
  1217.  
  1218.     VPRINT's interrupt 21H handler still monitors DOS_CRITICAL before
  1219.     attempting output, to guard against the chance of some other
  1220.     memory resident routine making a re-entrant call, and fooling
  1221.     VPRINT into thinking i/o was safe.
  1222.  
  1223.     As a final bit of insurance, the interrupt 21H handler watches
  1224.     for any output request, even if it's not obviously printer or
  1225.     RS-232 related.  If a request comes to output a block that
  1226.     wouldn't fit in VPRINT's buffer, the buffer is emptied even if
  1227.     the buffer is less than half full.  Since the DOS WRITE_BLOCK
  1228.     function can only handle blocks up to 64K, if VPRINT is installed
  1229.     with a 64K buffer, we should be able to handle any output a
  1230.     program sends.
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.                                                                    17
  1257.     To change options in the resident code, VPRINT examines the
  1258.     vector for interrupt 17H, then searches at the specified location
  1259.     for a "recognition string".   If this recognition string is not
  1260.     matched, changes are aborted.  If you load another memory
  1261.     resident program after VPRINT that intercepts interrupt 17H, you
  1262.     will not be able to change options or files used by the resident
  1263.     part of VPRINT.
  1264.  
  1265.     Selective trapping of PrtSc output is performed by monitoring a
  1266.     IBM documented flag in the BIOS data area: STATUS_BYTE at
  1267.     0050:0000.  This flag contains a non-zero value if a PrtSc
  1268.     operation is in progress.  Clones with a non-IBM BIOS may or may
  1269.     not maintain this flag at the same location, hence VPRINT's /PP
  1270.     option may not work on all clones.
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.                                                                    18
  1323.     >> Notes for Those Upgrading to This Version of VPRINT <<
  1324.  
  1325.     VPRINT is not yet carved in stone - improvements and corrections
  1326.     are made fairly frequently, based on both my own experience using
  1327.     the program, and the comments of outside users.  This section
  1328.     summarizes the changes which have been made since version 1.00
  1329.     was released.
  1330.  
  1331.     Version   Notes
  1332.  
  1333.        1.00   Very primitive DOS 1 version, to upgrade the original
  1334.               EasyWriter - at one point, the only available word
  1335.               processor for the IBM.  Veteran PC users still shudder
  1336.               when EasyWriter 1 is mentioned; among many other
  1337.               defects, it wouldn't print to disk.
  1338.  
  1339.        2.00   Updated DOS 2 version, not released
  1340.  
  1341.        2.01   Released as U/S
  1342.  
  1343.        3.00   Add int 28H buffer dump, add harmless output mode to
  1344.               watch dos critical flag before writes.
  1345.  
  1346.        3.01   Corrected bug in VPRINT's dos critical byte handling
  1347.  
  1348.        3.02   Add selective trapping of PrtSc operation
  1349.  
  1350.        4.00   Add int 21H buffer dump, variable buffer size, and kill
  1351.               off VPRINT's risky output mode, since harmless mode is
  1352.               now powerful enough for all programs.
  1353.  
  1354.        5.00   Add emulation of RS-232 output
  1355.  
  1356.        5.10   Added ability to branch output to file and printer
  1357.               simultaneously.
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.                                                                    19
  1389.  
  1390.     >> Miscellaneous and a Word From Our Sponsor...<<
  1391.  
  1392.     A. Red Tape and Legal Nonsense
  1393.  
  1394.        1. Disclaimer:
  1395.  
  1396.           VPRINT is distributed as is, with no guarantee that it will
  1397.           work correctly in all situations.  In no event will the
  1398.           Author be liable for any damages, including lost profits,
  1399.           lost savings or other incidental or consequential damages
  1400.           arising out of the use of or inability to use this program,
  1401.           even if the Author has been advised of the possibility of
  1402.           such damages, or for any claim by any other party.
  1403.  
  1404.           Despite the somewhat imposing statement above, it *is* my
  1405.           intention to fix any bugs which are brought to my
  1406.           attention.
  1407.  
  1408.        2. Copyright Information
  1409.  
  1410.           The entire VPRINT distribution package, consisting of the
  1411.           program, documentation file, and source code file are
  1412.           copyright (c) 1986, 1987, 1988 and 1992 by David Whitman.
  1413.           The author reserves the exclusive right to distribute this
  1414.           package or any part thereof for profit.  The name VPRINT
  1415.           (tm) applied to a microcomputer printer redirection utility
  1416.           is a trade mark of David Whitman.
  1417.  
  1418.           The VPRINT package (with the exception of the source code
  1419.           file VPRINT.ASM) may be freely copied by individuals for
  1420.           evaluation purposes.  It is expected that those who find
  1421.           the package useful will make a contribution directly to the
  1422.           author of the program.
  1423.  
  1424.           VPRINT's source code is made available to registered users
  1425.           for educational purposes and to allow them to customize for
  1426.           their own personal use.  The source code file is available
  1427.           only to those who make the suggested payment for use of
  1428.           VPRINT.  Under NO CIRCUMSTANCES may modified versions or
  1429.           translations into other computer languages be distributed,
  1430.           either for profit or in the public domain.
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.                                                                    20
  1455.  
  1456.       3.  User's Groups, Clubs, Libraries and Clearing Houses:
  1457.  
  1458.           I get about 5-10 requests a week from clearing houses and
  1459.           users groups either for a VPRINT disk or for written
  1460.           permission to distribute VPRINT. Due to the shear number of
  1461.           requests, I regret that I can no longer provide either of
  1462.           these services.
  1463.  
  1464.           To get the latest version of VPRINT, follow the normal
  1465.           shareware procedure and send a formatted disk and a
  1466.           stamped, self-addressed return mailer.  I'll copy the
  1467.           latest version and drop it in the mail.
  1468.  
  1469.           User's groups, clubs, libraries and clearing houses are
  1470.           authorized to distribute VPRINT under the following
  1471.           conditions:
  1472.  
  1473.           a. No charge is made for the software or documentation.  A
  1474.              nominal distribution fee may be charged, provided that
  1475.              it is no more that $8 total.
  1476.  
  1477.           b. Recipients are to be informed of the user-supported
  1478.              software concept, and encouraged to support it with
  1479.              their donations.
  1480.  
  1481.           c. The program and documentation are distributed together
  1482.              and are not modified in ANY way.
  1483.  
  1484.           d. The source code file VPRINT.ASM or disassemblies of
  1485.              VPRINT.COM may not be distributed.
  1486.  
  1487.           PLEASE DON'T WRITE ASKING FOR WRITTEN PERMISSION TO
  1488.           DISTRIBUTE VPRINT.  If you meet the above requirements, you
  1489.           have permission.
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.                                                                    21
  1521.     B. An Offer You Can't Refuse.
  1522.  
  1523.        VPRINT is user-supported software, distributed under a system
  1524.        identical to the FREEWARE (tm) marketing scheme developed by
  1525.        the late Andrew Flugelman, whose efforts are gratefully
  1526.        acknowledged.
  1527.  
  1528.        Anyone may obtain a free copy of VPRINT by sending a blank,
  1529.        formatted diskette to the author.  An addressed, postage-paid
  1530.        return mailer must accompany the disk (no exceptions, please).
  1531.  
  1532.        A copy of the program, with documentation, will be sent by
  1533.        return mail.  The program will carry a notice suggesting a
  1534.        payment to the program's author.  Making the payment is
  1535.        totally voluntary on the part of the user.  Regardless of
  1536.        whether a payment is made, the user is encouraged to share the
  1537.        program with others.  Payment for use is discretionary on the
  1538.        part of each subsequent user.
  1539.  
  1540.        The underlying philosophy here is based on the following
  1541.        principles:
  1542.  
  1543.        First, that the value and utility of software is best assessed
  1544.           by the user on his/her own system.  Only after using a
  1545.           program can one really determine whether it serves personal
  1546.           applications, needs, and tastes.
  1547.  
  1548.        Second, that the creation of independent personal computer
  1549.           software can and should be supported by those who benefit
  1550.           from its use.  Remember the Tanstaafl principal: There
  1551.           Ain't No Such Thing As A Free Lunch.  Support to authors
  1552.           encourages the continued creation of novel, low cost
  1553.           software.
  1554.  
  1555.        Finally, that copying and networking of programs should be
  1556.           encouraged, rather than restricted.  The ease with which
  1557.           software can be distributed outside traditional commercial
  1558.           channels reflects the strength, rather than the weakness,
  1559.           of electronic information.
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.                                                                    22
  1587.     If you like this software, please help support it.  Your support
  1588.     can take three forms:
  1589.  
  1590.         1. Become a registered user.  The suggested payment for
  1591.            registration is $20.
  1592.  
  1593.         2. Suggestions, comments and bug reports.  Your comments will
  1594.            be taken seriously.  VPRINT will evolve over time, based
  1595.            on the feedback of users.
  1596.  
  1597.         3. Spread the word.  Make copies for friends, or send the
  1598.            program to your favorite BBS.  Astronomical advertising
  1599.            costs are one big reason that commercial software is so
  1600.            overpriced.  To continue offering VPRINT this way, I need
  1601.            your help in letting other people know about VPRINT.
  1602.  
  1603.     Those who make the suggested $20 payment to become registered
  1604.     users receive the following benefits:
  1605.  
  1606.         1. Access to VPRINT's heavily commented source code.
  1607.  
  1608.         2. User support. SUPPORT IS ONLY AVAILABLE TO REGISTERED
  1609.            USERS.
  1610.  
  1611.         3. Notices of significant upgrades.
  1612.  
  1613.         4. A warm, fuzzy feeling of having done the right thing.  The
  1614.            converse is also true.  If you continue to use VPRINT
  1615.            without making the suggested payment, your self-image will
  1616.            gradually deteriorate until you wake up one day in the
  1617.            gutter on Skid Row, grubbing for cigarette butts and
  1618.            discarded floppy disks.  Honest.
  1619.  
  1620.     This documentation file was written using Volkswriter 3, then
  1621.     printed and captured by VPRINT to eliminate Volkswriter's special
  1622.     effects markers and get proper pagination.  Option /C was in
  1623.     effect to force line feeds into CR/LF pairs.
  1624.  
  1625.            - Dave Whitman
  1626.              P.O. Box 1157
  1627.              North Wales, PA  19454
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.                                                                    23
  1653.  
  1654.              >> Registration Form (version 5.10)<<
  1655.  
  1656.  
  1657.     Please send me a copy of the current version of VPRINT, and
  1658.     add me to the list of registered VPRINT users, to be eligible for
  1659.     phone support and upgrade notices.  I enclose a check for $20.
  1660.  
  1661.     Note: VPRINT requires DOS 2 or later to run.
  1662.  
  1663.  
  1664.     Computer Model: ______________________________
  1665.  
  1666.     Diskette Format:   ____ single    _____ double sided
  1667.  
  1668.     ===============================================================
  1669.  
  1670.     Name:             ______________________________________
  1671.  
  1672.     Address:          ______________________________________
  1673.  
  1674.     City, State, Zip: ______________________________________
  1675.  
  1676.     ==============================================================
  1677.  
  1678.     Where did you hear about VPRINT? _______________________
  1679.  
  1680.     ==============================================================
  1681.  
  1682.  
  1683.      Send registration form and check to:
  1684.  
  1685.           David Whitman
  1686.           P.O. Box 1157
  1687.           North Wales, PA  19454
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.                                                                    24
  1719.  
  1720.  
  1721.                   >> Also Available  <<
  1722.  
  1723.     CHASM is a full featured assembler for the IBM PC.
  1724.     Substantially simpler than the IBM macro assembler, CHASM is
  1725.     particularly suited for those learning assembly language.
  1726.  
  1727.     Using CHASM you can:
  1728.  
  1729.        * Learn 8088 / 8086 / 8087 assembly language.
  1730.  
  1731.        * Explore the inner workings of the IBM PC.
  1732.  
  1733.        * Write lighting-fast stand alone programs.
  1734.  
  1735.        * Produce machine language subroutines for BASIC programs.
  1736.  
  1737.     Although easy enough for beginners, CHASM is powerful enough for
  1738.     production coding.  VPRINT was assembled using CHASM.
  1739.  
  1740.     CHASM features macros, conditional assembly, structured
  1741.     variables, operand expressions and much more.  A free evaluation
  1742.     version can be obtained by sending a formatted disk and stamped
  1743.     return mailer to:
  1744.  
  1745.              David Whitman
  1746.              P.O. Box 1157
  1747.              North Wales, PA 19454
  1748.  
  1749.     A payment of $40 is requested from those who find the program
  1750.     useful.  Those who make this payment are upgraded to a version
  1751.     which runs twice as fast.
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.